﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AccesoADatos;
using Entidades;
using System.IO;
using LogicaNegocio.Reportes;
using LogicaNegocio;

namespace TodoSuspensionWeb
{
    public partial class oferta : System.Web.UI.Page
    {
        private int idOferta = 0;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                cargarDDL_Estado();
                txtFechaBusqueda.Text = DateTime.Now.ToString("yyyy-MM-dd");

                gdv_oferta.DataSource = OfertaDAO.getOferta(DateTime.Now, null);
                gdv_oferta.DataBind();

            }

        }

        private void cargarDDL_Estado()
        {
            List<EstadoOferta> estados = new List<EstadoOferta>();
            estados = EstadoOfertaDAO.cargarDDLestadosOferta();

            ddl_esatdo_oferta.Items.Add(new ListItem("Todos", "0"));

            foreach (Entidades.EstadoOferta estado in estados)
            {

                ddl_esatdo_oferta.Items.Add(new ListItem(estado.descripcion, Convert.ToString(estado.idEstado)));
                ddlEstado.Items.Add(new ListItem(estado.descripcion, Convert.ToString(estado.idEstado)));
            }

            ddl_esatdo_oferta.SelectedIndex = 0;
            ddlEstado.SelectedIndex = 0;
        }

        private void cargarGrillaOfertas()
        {
            gdv_oferta.DataSource = OfertaDAO.getOferta(null, null);

            gdv_oferta.DataKeyNames = new string[] { "idOferta" };

            gdv_oferta.DataBind();
        }


        protected void btnBuscarOferta_Click(object sender, EventArgs e)
        {
            DateTime? fechaBusqueda = null;
            int estado;

            if (txtFechaBusqueda.Text != null && txtFechaBusqueda.Text.Trim() != "")
            {
                fechaBusqueda = DateTime.Parse(txtFechaBusqueda.Text);
            }

            estado = int.Parse(ddl_esatdo_oferta.SelectedValue.ToString());

            gdv_oferta.DataSource = OfertaDAO.getOferta(fechaBusqueda, estado);
            gdv_oferta.DataBind();


        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            Oferta dto = new Oferta();

            dto.titulo = txtTitulo.Text;
            dto.descripcion = txtDescripcion.Text;
            dto.descuento = Int32.Parse(txtDescuento.Text);
            dto.fechaDesde = DateTime.Parse(txtFechaDesde.Text);
            dto.fechaHasta = DateTime.Parse(txtFechaHasta.Text);
            dto.idEstado = int.Parse(ddlEstado.SelectedValue.ToString());
            dto.precioPromocional = decimal.Parse(txtPrecioPromocional.Text);
            dto.precioOriginal = int.Parse(txtPrecioOriginal.Text);


            Stream imgStream = fileUpload1.PostedFile.InputStream;
            int imgLen = fileUpload1.PostedFile.ContentLength;
            byte[] imgBinaryData = new byte[imgLen];
            dto.imagen = imgBinaryData;

            int n = imgStream.Read(imgBinaryData, 0, imgLen);

            OfertaDAO.ofertaSave(dto);

            gdv_oferta.DataSource = OfertaDAO.getOferta(null, null);
            gdv_oferta.DataBind();
        }


        protected void gdv_oferta_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            OfertaDAO.OfertaDelete(int.Parse(gdv_oferta.DataKeys[e.RowIndex].Values["idOferta"].ToString()));
            cargarGrillaOfertas();

        }

        protected void gdv_oferta_SelectedIndexChanged(object sender, EventArgs e)
        {

            idOferta = Convert.ToInt16(gdv_oferta.SelectedDataKey.Values["idOferta"]);
            Oferta dto = OfertaDAO.getOfertaId(idOferta);
            txtDescripcion.Text = dto.descripcion.ToString();
            txtDescuento.Text = dto.descuento.ToString();
            txtFechaDesde.Text = dto.fechaDesde.ToString("yyyy-MM-dd");
            txtFechaHasta.Text = dto.fechaHasta.ToString("yyyy-MM-dd");
            txtPrecioOriginal.Text = dto.precioOriginal.ToString();
           // txtPrecioPromocional.Text = dto.precioPromocional.ToString();
            txtTitulo.Text = dto.titulo.ToString();

            EstadoOferta estadoOferta = EstadoOfertaDAO.getEstadoOfertaID(dto.idEstado);
            ddlEstado.SelectedValue = estadoOferta.idEstado.ToString();

            txtDescuento_TextChanged(sender, e);


          //  gdv_detalle_pedido.DataSource = detallePedidoDAO.buscarDetallePedidoID(id_pedido_seleccionado);
          //  gdv_detalle_pedido.DataKeyNames = new string[] { "id_pedido", "id_repuesto" };
          //  gdv_detalle_pedido.DataBind();
        }

        protected void btnModificar_Click(object sender, EventArgs e)
        {
            Oferta dto = new Oferta();
            dto.idOferta = Convert.ToInt16(gdv_oferta.SelectedDataKey.Values["idOferta"]);

            dto.titulo = txtTitulo.Text;
            dto.descripcion = txtDescripcion.Text;
            dto.descuento = Int32.Parse(txtDescuento.Text);
            dto.fechaDesde = DateTime.Parse(txtFechaDesde.Text);
            dto.fechaHasta = DateTime.Parse(txtFechaHasta.Text);
            dto.idEstado = int.Parse(ddlEstado.SelectedValue.ToString());
            dto.precioPromocional = Convert.ToDecimal(txtPrecioPromocional.Text);
            dto.precioOriginal = Convert.ToDouble(txtPrecioOriginal.Text);

            Stream imgStream = fileUpload1.PostedFile.InputStream;
            int imgLen = fileUpload1.PostedFile.ContentLength;
            byte[] imgBinaryData = new byte[imgLen];
            dto.imagen = imgBinaryData;

            int n = imgStream.Read(imgBinaryData, 0, imgLen);

            OfertaDAO.OfertaUpdate(dto);
            Response.Redirect("oferta.aspx");

        }

        protected void Button7_Click(object sender, EventArgs e)
        {

                rptOfertas rpt = new rptOfertas();
               
                    LogicaReporte.rptOferta(ref rpt);
                    Session.Add("Reporte", rpt);
                    Response.Redirect("Reportes.aspx");                    
                }
             
                    //if (ex.Message.Contains("No existen creditos"))
                    //{
                    //    lblResul.Text = ex.Message;
                    //    lblResul.Visible = true;
                    //}
               
            //}

        protected void btnLimpiar_Click(object sender, EventArgs e)
        {
            Response.Redirect("oferta.aspx");
        }

        protected void txtDescuento_TextChanged(object sender, EventArgs e)
        {
            if (txtPrecioOriginal.Text.Trim() != null || txtPrecioOriginal.Text.Trim() != "")
            {
                float precio = float.Parse(txtPrecioOriginal.Text.Trim());
                float descuento = float.Parse(txtDescuento.Text.Trim());

                float total = precio - (precio * descuento) / 100;

                txtPrecioPromocional.Text = total.ToString();
            }
        }

    }
}